package com.bzyd.shiro.controller;


import com.bzyd.shiro.common.SysResult;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authz.annotation.RequiresGuest;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.apache.shiro.authz.annotation.RequiresUser;
import org.apache.shiro.subject.Subject;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 * 用户表 前端控制器
 * </p>
 *
 * @author Xianyue Dang
 * @since 2021-09-10
 */
@RestController
@RequestMapping("/test")
public class TestController {

    @RequestMapping("test")
    public SysResult test(){
        return SysResult.ok("test");
    }

    // 使用注解方式，在无权限时，会报AuthorizationException，需要做好异常捕捉
    @RequestMapping("/createUser")
    @RequiresPermissions("user:create")
    public SysResult createUser(){
        return SysResult.ok("创建用户成功！");
    }

    @RequestMapping("/findOrder")
    @RequiresPermissions("order:list")
    public SysResult findOrder(){
        return SysResult.ok("查看订单列表！");
    }

    @RequestMapping("test1")
    @RequiresRoles("管理员")
    public SysResult test1(){
        return SysResult.ok("test1");
    }

    // 测试开放权限菜单
    @RequestMapping("test2")
    public SysResult test2(){
        return SysResult.ok("test2");
    }

    // 不使用注解，在无权限时不会报AuthorizationException，会直接跳转上面设置的unauthorized-url
    // 测试roles[管理员]
    @RequestMapping("test3")
    public SysResult test3(){
        return SysResult.ok("test3");
    }

    // 测试perms[biz:test4]
    @RequestMapping("test4")
    public SysResult test4(){
        return SysResult.ok("test4");
    }

}

